package exception;

/**
 * finally块是异常处理机制的最后一块
 * 它可以直接跟在try语句块之后，或者最后一个catch语句块之后
 *
 * finally可以保证只要程序执行到try语句块中，无论try语句块中是否出现异常，
 * finally语句块中的代码都会执行
 *
 * 因此我们通常会将诸如释放资源这类操作放在finally语句块中执行
 * 比如:IO操作后的关闭流操作
 */
public class FinallyDemo {
    public static void main(String[] args) {
        System.out.println("程序开始了...");
        try {
            String line = "abc";
//            String line = null;
            System.out.println(line.length());
            return;
        } catch (Exception e) {
            System.out.println("出错了");
        } finally {
            //就算try中执行到了return，也要先执行完finally方法才能返回
            System.out.println("finally中的代码执行了");
        }
        //如果try中执行到了return，那么方法后面剩余代码是不会执行的
        System.out.println("程序结束了!");
    }
}





